home *** CD-ROM | disk | FTP | other *** search
/ Gekkan Dennou Club 140 / Gekkan Dennou Club - 2000.1 Vol. 140 (Japan).7z / Gekkan Dennou Club - 2000.1 Vol. 140 (Japan) (Track 1).bin / tools / xpicw / xpicw110.lzh / WLSource / fadeout.s < prev    next >
Encoding:
Text File  |  1997-04-10  |  1.8 KB  |  110 lines

  1. *    fadeout.s
  2. *        フェードアウト(コントラスト操作) / 最高速 = 3
  3. *        画面クリア時にしか使えない、やや邪道なワイプ・・・
  4. *            by Mitsuky
  5.  
  6.     .include    IOCSCALL.MAC
  7.  
  8. SPEED_MAX    equ    3
  9.  
  10.     .offset    8        * 引き数
  11. _source_ptr:    .ds.l    1
  12. _dest_ptr:    .ds.l    1
  13. _speed:        .ds.l    1
  14. _vdisp:        .ds.l    1
  15.  
  16.  
  17. WAIT        equ    300    * ファードアウト後待つ時間(単位 1/60 秒)
  18.  
  19.  
  20.  
  21.     .text
  22.     .even
  23.  
  24.     .dc.b    'WL10',$0d,$0a
  25.     .dc.b    'フェードアウト(コントラスト操作) / 最高速 = 3',$0d,$0a
  26.     .dc.b    '    by Mitsuky',$0d,$0a
  27.     .dc.b    $1a
  28.     .even
  29. fadeout:
  30.     link    a6,#0
  31.     movem.l    d1-d7/a0-a5,-(sp)
  32.  
  33.     move.l    _speed(a6),d0
  34.     bmi    main_ask_speed
  35.     cmpi.l    #SPEED_MAX,d0
  36.     bhi    main_err
  37.  
  38.     tst.l    _vdisp(a6)
  39.     bmi    main_ask_vdisp
  40.  
  41.  
  42.     moveq.l    #SPEED_MAX,d7
  43.     sub.l    d0,d7
  44.     lsl.l    #2,d7            * d7.l = ループ回数-1
  45.  
  46.     moveq.l    #-1,d1            * 現在のコントラスト問い合わせ
  47.     IOCS    _CONTRAST
  48.     move.b    d0,d1
  49.     subq.b    #1,d1            * d1.b = 設定するコントラスト
  50.  
  51. contrast_loop:
  52.     IOCS    _CONTRAST
  53.     move.w    d7,d0
  54. @@:    bsr    vdisp
  55.     dbra    d0,@b
  56.     subq.b    #1,d1
  57.     bpl    contrast_loop
  58.  
  59.     move.w    #WAIT-1,d0
  60. @@:    bsr    vdisp            * 完全にコントラストが安定するまで待つ
  61.     dbra    d0,@b
  62.  
  63.  
  64.     movea.l    _source_ptr(a6),a0    * a0.l = 転送元アドレス
  65.     movea.l    _dest_ptr(a6),a1    * a1.l = 転送先アドレス
  66.  
  67.     move.w    #512-1,d0
  68. @@:    .rept    512/2
  69.     move.l    (a0)+,(a1)+        * 1ライン転送(手抜き)
  70.     .endm
  71.     dbra    d0,@b
  72.  
  73.     moveq.l    #0,d0
  74. main_rts:
  75.     movem.l    (sp)+,d1-d7/a0-a5
  76.     unlk    a6
  77.     rts
  78.  
  79.  
  80. ****    ****
  81. main_err:
  82.     moveq.l    #-1,d0
  83.     bra    main_rts
  84.  
  85.  
  86. ****    ****
  87. main_ask_speed:
  88.     moveq.l    #SPEED_MAX,d0
  89.     bra    main_rts
  90.  
  91.  
  92. ****    ****
  93. main_ask_vdisp:
  94.     move.l    _speed(a6),d0
  95.     lea.l    ask_vdisp_table(pc),a0
  96.     add.w    d0,d0
  97.     move.w    (a0,d0.w),d0
  98.     bra    main_rts
  99.  
  100. ask_vdisp_table:
  101.     .dc.w    495,435,375,315
  102.  
  103. *********************************************************
  104. vdisp:
  105.     movem.l    a0,-(sp)
  106.     move.l    _vdisp(a6),a0
  107.     jsr    (a0)
  108.     movem.l    (sp)+,a0
  109.     rts
  110.